//-----------------------------------------------------------------------------
//
//      Класс статической картинки
//      (c) РГУПС, ВЖД 07/03/2017
//      Разработал: Ковшиков С. В.
//
//-----------------------------------------------------------------------------


#include "image-widget.h"


//-----------------------------------------------------------------------------
// КОНСТРУКТОР
//-----------------------------------------------------------------------------
ImageWidget::ImageWidget(QString resprefix, QString imgname,
                         QSize imgsize, QWidget *parent) :
    QLabel(parent),             // Передаём родителя в базовый класс
    resourcePrefix_(resprefix), // Устанавливаем префикс
    imageName_(imgname)         // Устанавливаем имя картинки для ресурсов
{
    this->resize(imgsize);

    // Устанавливаем картинку с учетом ПРЕФИКСА и ИМЕНИ картики
    this->setImage(resourcePrefix_, imageName_);
}



//-----------------------------------------------------------------------------
// ДЕКОНСТРУКТОР
//-----------------------------------------------------------------------------
ImageWidget::~ImageWidget()
{

}



//-----------------------------------------------------------------------------
// Установка картинки
//-----------------------------------------------------------------------------
void ImageWidget::setImage(QString resprefix, QString imgname)
{
    // Формируем имя ресурса из ПРЕФИКСА и ИМЕНИ картинки
    QString resName = "";
    resName.append(":/");
    resName.append(resprefix);
    resName.append("/");
    resName.append(imgname);

    QPixmap* pix;

    if (QFile::exists(resName)) // Если файл есть в ресурсах
    {
        // Грузим картинку в пиксмэп
        pix = new QPixmap(resName);
    }
    else // Если файла в ресурсах нет
    {
        // Грузим картинку ошибки в пиксмэп
        pix = new QPixmap(":/service/err");
        // Подготовка изображения об ошибке
        errorImage_(pix);
        // Устанавливаем подсказку на данную картинку
        this->setToolTip(resName);
    }

    // Устанавливаем "пиксмэп" на себя
    this->setPixmap(pix->scaled(this->width(), this->height()));
}



//-----------------------------------------------------------------------------
// Получение префикса
//-----------------------------------------------------------------------------
QString ImageWidget::resourcePrefix()
{
    return resourcePrefix_;
}



//-----------------------------------------------------------------------------
// Метод создания картинки с ошибкой
//-----------------------------------------------------------------------------
void ImageWidget::errorImage_(QPixmap *pix)
{
    // Передаем пиксмэп в "рисователь"
    QPainter p(pix);
    // Создаём перо белого цвета
    QPen pen(QBrush(QColor(255, 255, 255)), 12);
    // Устанавливаем перо на "рисователь"
    p.setPen(pen);
    // Создаём статический текст
    QStaticText errText("image");
    // Рисуем текст на картинке
    p.drawStaticText(25, 7, errText);
    errText.setText("not found");
    p.drawStaticText(15, 19, errText);
}
